// 这个文件专门用来存放关于列表的所有接口
const Router = require('koa-router');
const login = new Router();
const bodyparser = require('koa-bodyparser');
const db = require('../utils/db');
const jwt = require('jsonwebtoken');

//调用这个中间件之后，就可以拿到前端post过来的数据
login.use(bodyparser());
// 写对应的接口
login.get('/', async (ctx) => {
    ctx.body = "列表首页login";
})
login.post('/register', async (ctx) => {
    // 可以打印拿到的前端的数据
    // console.log(ctx.request.body);
    let myaccount = ctx.request.body.account; //前端过来的账号
    let mypwd = ctx.request.body.pwd; //前端过来的密码
    // 判断数据库里面有没有这个数据，如果有就验证密码，如果没有就注册一条记录
    let searchSql = `select * from users where account = '${myaccount}'`;
    let myarr = await new Promise((resolve, reject) => {
        return db.query(searchSql, (err, data) => {
            if (err) throw err;
            // console.log(data);
            resolve(data); //扔出去一个数组
        })
    })

    // 数组长度是否大于0，数组大于0有这个账号
    if (myarr.length > 0) {
        // 证明有这个账号，验证密码
        // console.log(myarr);
        if (myarr[0].pwd == mypwd) {
            ctx.body = {
                msg: '登录成功',
                token: myarr[0].token,
                account: myarr[0].account
            };
        } else {
            ctx.body = {
                msg: '密码或者账号错误'
            };
        }
    } else {
        // 没有账号，要注册（往users表中插入一条记录）
        // 创建一个token
        let mytoken = jwt.sign({ myaccount: myaccount, mypwd: mypwd }, 'secret', { expiresIn: 3600 });
        let insertSql = `insert into users (account, pwd, token) values ('${myaccount}','${mypwd}','${mytoken}')`;
        let result = await new Promise((resolve, reject) => {
            return db.query(insertSql, (err, data) => {
                if (err) throw err;
                // console.log(data); //扔出去一个数组
                let obj = {
                    msg: '注册成功',
                    token: mytoken,
                    account: myaccount
                }
                resolve(obj);
            })
        })
        ctx.body = result;

    }

    // ctx.body = "登录注册";
})
login.post('/openid', async ctx => {
    console.log('收到登录请求')
    if ( ctx.request.body.openid === "undefined" ) {
        ctx.body = '未获取用户openid'
    } else {
        let searchOpenidSql = `select openid from users where openid="${ctx.request.body.openid}"`
        let result = await new Promise((resolve, reject) => {
            return db.query(searchOpenidSql, (err, data) => {
                if (err) throw err
                resolve(data)
            })
        })
        if (JSON.stringify(result) == "[]") {
            let insertOpenidSql = `insert into users (openid,username) values('${ctx.request.body.openid}','${ctx.request.body.username}') `
            let insertResult = await new Promise((resolve, reject) => {
                return db.query(insertOpenidSql, (err, data) => {
                    if (err) throw err
                    resolve(data)
                })
            })
            ctx.body = '是个新用户，已记录到数据库中'
        } else {
            ctx.body = '是老用户'
        }

    }
})





module.exports = login;